package com.jinzhu.service;

import com.jinzhu.pojo.*;
import com.jinzhu.utils.PagedGridResult;
import com.jinzhu.vo.CategoryVO;
import com.jinzhu.vo.CommentLevelCountsVO;
import com.jinzhu.vo.NewItemsVO;
import com.jinzhu.vo.ShopcartVO;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 商品展示
 * jinzhu
 */
public interface ItemsService {
    /**
     * 根据商品id查询商品详情
     * @param id
     * @return
     */
     Items queryItemsById(String itemId);

    /**
     * 根据商品id查询商品图片列表
     * @param id
     * @return
     */
    List<ItemsImg> queryItemsImgList(String itemId);

    /**
     * 根据商品id查询商品规格列表
     * @param id
     * @return
     */
    List<ItemsSpec> queryItemsSpecList(String itemId);

    /**
     * 根据商品id查询商品参数
     * @param id
     * @return
     */
    ItemsParam queryItemsParamByItemId(String itemId);

    /**
     * 根据商品id查询商品的评价等级数量
     * @param itemId
     */
     CommentLevelCountsVO queryCommentCounts(String itemId);

    /**
     * 根据商品id查询商品的用户评价---分页
     *
     * @param itemId
     * @param level
     * @param page
     * @param pageSize
     */
     PagedGridResult queryPagedComments(String itemId,
                                              Integer level,
                                              Integer page,
                                              Integer pageSize);

/*下面写二个不同接口是对于 字符串 和id 搜索 分开是为了解耦也为了后期网站访问人数多 而进行耦合度的分开和压力*/
    /**
     * 搜索商品列表
     * @param keywords
     * @param sort
     * @param page
     * @param pageSize
     * @return
     */
     PagedGridResult searhItems(String keywords, String sort,
                                      Integer page, Integer pageSize);

    /**
     * @param username 根据三级分类id搜索商品列表
     * @return IMOOCJSONResult
     * <p>
     * 搜索商品列表                                                                                                                  是否存在
     * @author jinzhu
     * @date 2021-05-06
     */
    PagedGridResult searhItems(Integer catId, String sort,
                               Integer page, Integer pageSize);


    /**
     * 根据规格ids查询最新的购物车中商品数据（用于刷新渲染购物车中的商品数据）
     * @param specIds
     * @return
     * @author jinzhu
     * @date 2021-05-06
     */
     List<ShopcartVO> queryItemsBySpecIds(String specIds);
}
